/**
 * Note: This file needs to be updated with typescript major and minor updates
 *
 * https://www.typescriptlang.org/play
 *
 * Generated from the following code:
 *
JSON.stringify(
  ts.optionDeclarations.map(({ name, type }) => ({
    name,
    type: type instanceof Map ? Object.fromEntries(type) : type,
  }))
)
 *
 */

export const optionDeclarations = [
  { name: "help", type: "boolean" },
  { name: "help", type: "boolean" },
  { name: "watch", type: "boolean" },
  { name: "preserveWatchOutput", type: "boolean" },
  { name: "listFiles", type: "boolean" },
  { name: "explainFiles", type: "boolean" },
  { name: "listEmittedFiles", type: "boolean" },
  { name: "pretty", type: "boolean" },
  { name: "traceResolution", type: "boolean" },
  { name: "diagnostics", type: "boolean" },
  { name: "extendedDiagnostics", type: "boolean" },
  { name: "generateCpuProfile", type: "string" },
  { name: "generateTrace", type: "string" },
  { name: "incremental", type: "boolean" },
  { name: "declaration", type: "boolean" },
  { name: "declarationMap", type: "boolean" },
  { name: "emitDeclarationOnly", type: "boolean" },
  { name: "sourceMap", type: "boolean" },
  { name: "inlineSourceMap", type: "boolean" },
  { name: "noCheck", type: "boolean" },
  { name: "noEmit", type: "boolean" },
  { name: "assumeChangesOnlyAffectDirectDependencies", type: "boolean" },
  { name: "locale", type: "string" },
  { name: "all", type: "boolean" },
  { name: "version", type: "boolean" },
  { name: "init", type: "boolean" },
  { name: "project", type: "string" },
  { name: "showConfig", type: "boolean" },
  { name: "listFilesOnly", type: "boolean" },
  {
    name: "target",
    type: {
      es3: 0,
      es5: 1,
      es6: 2,
      es2015: 2,
      es2016: 3,
      es2017: 4,
      es2018: 5,
      es2019: 6,
      es2020: 7,
      es2021: 8,
      es2022: 9,
      es2023: 10,
      es2024: 11,
      esnext: 99,
    },
  },
  {
    name: "module",
    type: {
      none: 0,
      commonjs: 1,
      amd: 2,
      system: 4,
      umd: 3,
      es6: 5,
      es2015: 5,
      es2020: 6,
      es2022: 7,
      esnext: 99,
      node16: 100,
      node18: 101,
      node20: 102,
      nodenext: 199,
      preserve: 200,
    },
  },
  { name: "lib", type: "list" },
  { name: "allowJs", type: "boolean" },
  { name: "checkJs", type: "boolean" },
  {
    name: "jsx",
    type: {
      preserve: 1,
      "react-native": 3,
      "react-jsx": 4,
      "react-jsxdev": 5,
      react: 2,
    },
  },
  { name: "outFile", type: "string" },
  { name: "outDir", type: "string" },
  { name: "rootDir", type: "string" },
  { name: "composite", type: "boolean" },
  { name: "tsBuildInfoFile", type: "string" },
  { name: "removeComments", type: "boolean" },
  { name: "importHelpers", type: "boolean" },
  {
    name: "importsNotUsedAsValues",
    type: { remove: 0, preserve: 1, error: 2 },
  },
  { name: "downlevelIteration", type: "boolean" },
  { name: "isolatedModules", type: "boolean" },
  { name: "verbatimModuleSyntax", type: "boolean" },
  { name: "isolatedDeclarations", type: "boolean" },
  { name: "erasableSyntaxOnly", type: "boolean" },
  { name: "libReplacement", type: "boolean" },
  { name: "strict", type: "boolean" },
  { name: "noImplicitAny", type: "boolean" },
  { name: "strictNullChecks", type: "boolean" },
  { name: "strictFunctionTypes", type: "boolean" },
  { name: "strictBindCallApply", type: "boolean" },
  { name: "strictPropertyInitialization", type: "boolean" },
  { name: "strictBuiltinIteratorReturn", type: "boolean" },
  { name: "noImplicitThis", type: "boolean" },
  { name: "useUnknownInCatchVariables", type: "boolean" },
  { name: "alwaysStrict", type: "boolean" },
  { name: "noUnusedLocals", type: "boolean" },
  { name: "noUnusedParameters", type: "boolean" },
  { name: "exactOptionalPropertyTypes", type: "boolean" },
  { name: "noImplicitReturns", type: "boolean" },
  { name: "noFallthroughCasesInSwitch", type: "boolean" },
  { name: "noUncheckedIndexedAccess", type: "boolean" },
  { name: "noImplicitOverride", type: "boolean" },
  { name: "noPropertyAccessFromIndexSignature", type: "boolean" },
  {
    name: "moduleResolution",
    type: {
      node10: 2,
      node: 2,
      classic: 1,
      node16: 3,
      nodenext: 99,
      bundler: 100,
    },
  },
  { name: "baseUrl", type: "string" },
  { name: "paths", type: "object" },
  { name: "rootDirs", type: "list" },
  { name: "typeRoots", type: "list" },
  { name: "types", type: "list" },
  { name: "allowSyntheticDefaultImports", type: "boolean" },
  { name: "esModuleInterop", type: "boolean" },
  { name: "preserveSymlinks", type: "boolean" },
  { name: "allowUmdGlobalAccess", type: "boolean" },
  { name: "moduleSuffixes", type: "list" },
  { name: "allowImportingTsExtensions", type: "boolean" },
  { name: "rewriteRelativeImportExtensions", type: "boolean" },
  { name: "resolvePackageJsonExports", type: "boolean" },
  { name: "resolvePackageJsonImports", type: "boolean" },
  { name: "customConditions", type: "list" },
  { name: "noUncheckedSideEffectImports", type: "boolean" },
  { name: "sourceRoot", type: "string" },
  { name: "mapRoot", type: "string" },
  { name: "inlineSources", type: "boolean" },
  { name: "experimentalDecorators", type: "boolean" },
  { name: "emitDecoratorMetadata", type: "boolean" },
  { name: "jsxFactory", type: "string" },
  { name: "jsxFragmentFactory", type: "string" },
  { name: "jsxImportSource", type: "string" },
  { name: "resolveJsonModule", type: "boolean" },
  { name: "allowArbitraryExtensions", type: "boolean" },
  { name: "out", type: "string" },
  { name: "reactNamespace", type: "string" },
  { name: "skipDefaultLibCheck", type: "boolean" },
  { name: "charset", type: "string" },
  { name: "emitBOM", type: "boolean" },
  { name: "newLine", type: { crlf: 0, lf: 1 } },
  { name: "noErrorTruncation", type: "boolean" },
  { name: "noLib", type: "boolean" },
  { name: "noResolve", type: "boolean" },
  { name: "stripInternal", type: "boolean" },
  { name: "disableSizeLimit", type: "boolean" },
  { name: "disableSourceOfProjectReferenceRedirect", type: "boolean" },
  { name: "disableSolutionSearching", type: "boolean" },
  { name: "disableReferencedProjectLoad", type: "boolean" },
  { name: "noImplicitUseStrict", type: "boolean" },
  { name: "noEmitHelpers", type: "boolean" },
  { name: "noEmitOnError", type: "boolean" },
  { name: "preserveConstEnums", type: "boolean" },
  { name: "declarationDir", type: "string" },
  { name: "skipLibCheck", type: "boolean" },
  { name: "allowUnusedLabels", type: "boolean" },
  { name: "allowUnreachableCode", type: "boolean" },
  { name: "suppressExcessPropertyErrors", type: "boolean" },
  { name: "suppressImplicitAnyIndexErrors", type: "boolean" },
  { name: "forceConsistentCasingInFileNames", type: "boolean" },
  { name: "maxNodeModuleJsDepth", type: "number" },
  { name: "noStrictGenericChecks", type: "boolean" },
  { name: "useDefineForClassFields", type: "boolean" },
  { name: "preserveValueImports", type: "boolean" },
  { name: "keyofStringsOnly", type: "boolean" },
  { name: "plugins", type: "list" },
  { name: "moduleDetection", type: { auto: 2, legacy: 1, force: 3 } },
  { name: "ignoreDeprecations", type: "string" },
];
